#ifndef CONTROLADORESCRITURACLIENTE_H_
#define CONTROLADORESCRITURACLIENTE_H_

using namespace std;

#include "../../Modelo/ClaseModelo/Modelo.h"
#include "../../Controlador/InputServidor.h"
#include "../../Utils/Timer.h"
#include "../../Utils/Logger.h"

#include <algorithm>
#include <queue>

enum EstadoThreadEscritura {
	EscrituraCorriendo,
	EscrituraInactiva,
	EscrituraFin
};

class ControladorEscrituraCliente {
	
	pair<pthread_t, EstadoThreadEscritura> threadEscritura;
	pthread_mutex_t mutexEstadoEscritura;
	
	string dibujables;
	string sonidos;
	string puntajes;
	queue<string> updates;
	Punto posicionJugador;
	
	pthread_mutex_t mutexDibujables;
	pthread_mutex_t mutexSonidos;
	pthread_mutex_t mutexPuntajes;
	pthread_mutex_t mutexUpdates;
	
	public:
	
	ControladorEscrituraCliente(Punto posicionJugador);
	~ControladorEscrituraCliente();
	
	EstadoThreadEscritura getEstadoEscritura();
	void setEstadoEscritura(EstadoThreadEscritura estado);
	
	string getDibujables();
	void setDibujables(string paquete);
	void setPosicionJugador(Punto posicion);
	
	string getPuntajes();
	void setPuntajes(string puntajes);
	
	string getSonidos();
	void setSonidos(string sonidos);
	
	void addUpdate(string mensaje);
	vector<string> getUpdates();

};

#endif /* CONTROLADORESCRITURACLIENTE_H_ */